import string
import urllib.request
#从parse库中导入quote类
from urllib.parse import quote
from bs4 import BeautifulSoup

def nospace(world):
    return world.strip().replace(" ","").replace("\n","")

city = input("请输入城市：")
code = {
    '北京': '530',
    '上海': '538',
    '广州': '763',
    '深圳': '765',
    '天津': '531',
    '武汉': '736',
    '西安': '854',
    '成都': '801',
    '沈阳': '599',
    '南京': '635',
    '杭州': '653',
    '苏州': '639',
    '重庆': '551',
    '长沙': '749',
    '厦门': '682',
    '南昌': '691'
}
city = code[city]
jobName = input("请输入相关岗位：")
url="https://sou.zhaopin.com/?jl="+city+"&kw="+jobName+"&p=1"
#如果url中包含中文，需要通过quote转义，不然会报错
#url中允许是使用的字符有  数字、字母、一些特殊符号
#-_.~! 键盘上能够输入的符号
url=quote(url,safe=string.printable)
#print(url)
#发送http请求
resp = urllib.request.urlopen(url)
#获取页面内容 read()用来获取相应内容 是二进制格式
#需要decode() 转义成utf-8
content=resp.read().decode("utf-8")        #print(resp.content.decode("utf-8"))
#通过BeautifulSoup对象去解析页面，同时要安装解析器，推荐lxml
soup=BeautifulSoup(content,"lxml")
#接下来玖似乎悬着页面中存放咋们想要的数据页面元素
#通过标签的class属性的只来换取元素
jobList=soup.select(".joblist-box__item")
#创建一个list用来存放单个相关的信息的字典
job_list=[]
for job in jobList:
    #创建一个字典用来存放单个招聘信息的内容
    job_dict={}
    #get_text()用来获取所有文本内容
    #getText()获取所有文本内容，拼接成一个字符串进行显示
    #岗位名称
    job_name=job.select(".jobinfo__name")[0].get_text()
    #工资
    job_sal=job.select(".jobinfo_salary")[0].getText()
    #取出工资数据包含的空格以及换行
    #strip()去除左右两边的控股.replace(a,b)用b替换a
    job_sal=nospace(job_sal)
    if '天' in job_sal:
        job_sal=int(job_sal.split("-"))[0]*30
    elif('千'in job_sal):
        job_sal=int(job_sal.split("千"))[0]*1000
    elif ('万' in job_sal):
        job_sal = float(job_sal.split("万"))[0] * 10000
    else:
        job_sal=5000
    print(job_sal)
    #公司名称
    company_name=nospace(job.select(".companyinfo__name")[0].get_text())
    job_msg=job.select(".jobinfo__other-info-item")     # print(job_msg[0].getText)print(job_msg[0].get_text())
    #工作地点
    job_place=nospace(job_msg[0].getText())
    #工作经验
    job_exp=nospace(job_msg[1].getText())
    #学历要求
    job_education=nospace(job_msg[2].getText())       #print(job_place,job_exp,job_education)
    #最后将数据存入字典
    job_dict['job_name'] = job_name
    job_dict['job_sal'] = job_sal
    job_dict['company_name'] = company_name
    job_dict['job_place'] = job_place[0:2]
    job_dict['job_exp'] = job_exp
    job_dict['job_education'] = job_education
    job_list.append(job_dict)
for i in job_list:
    print(i)
